import timeFormat from '../../libs/function/timeFormat.js';

/**
 * 时间戳转为多久之前
 * @param String timestamp 时间戳
 * @param String | Boolean format 如果为时间格式字符串，超出一定时间范围，返回固定的时间格式；
 * 如果为布尔值false，无论什么时间，都返回多久以前的格式
 * 当天，显示时间：小时：分钟，例如08:50
 * 跨天，但少于24小时：昨天  小时：分钟；例如昨天08:50
 * 跨天，超过24小时，但未跨年：显示月份-日期 小时：分钟；例如08-01 08:50
 * 跨年，显示年-月-日：年份-月份-日期 小时：分钟，例如2020-08-01 08:50
 */
function timeFrom(dateTime = null, format = 'yyyy-mm-dd') {
	// 如果为null,则格式化当前时间
	if (!dateTime) dateTime = Number(new Date());
	if (dateTime.toString().length > 13) dateTime = new Date(dateTime).getTime();
	// 如果dateTime长度为10或者13，则为秒和毫秒的时间戳，如果超过13位，则为其他的时间格式
	if (dateTime.toString().length == 10) dateTime *= 1000;
	let timestamp = +new Date(Number(dateTime));

	let timer = (Number(new Date()) - timestamp) / 1000;
	// 如果小于5分钟,则返回"刚刚",其他以此类推
	let tips = '';
	switch (true) {
		case timer < 86400:
			tips = timeFormat(timestamp, 'hh:MM');
			break;
		case timer >= 86400 && timer < 172800:
			tips = '昨天 ' + timeFormat(timestamp, 'hh:MM');
			break;
		case timer >= 172, 800 && timer < 31536000:
			tips = timeFormat(timestamp, 'mm-dd hh:MM');
			break;
		default:
			tips = timeFormat(timestamp, format);
	}
	return tips;
}

export default timeFrom;
